home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d21 / apicsamp.arc / README.DOC < prev    next >
Text File  |  1989-02-24  |  21KB  |  521 lines

  1. DESQview API C Sampler, Copyright (c) 1989 Quarterdeck Office Systems.
  2.  
  3.  
  4.                  Quarterdeck Office Systems
  5.          150 Pico Boulevard  Santa Monica, CA 90405
  6.              (213) 392-9851  Fax (213) 399-3802
  7.  
  8.  
  9.  
  10.                    DESQview API C Library
  11.                    ----------------------
  12.  
  13. The DESQview API (Application Program Interface) C Library is a set
  14. of over 200 functions that gives your C program full access to the
  15. DESQview API.
  16.  
  17. Using the C Library a program can ask the DESQview API to:
  18.  
  19. o display information in windows and change the color, dimensions,
  20.   position, and ordering of windows on the screen,
  21.  
  22. o handle all keyboard and mouse input to menus and forms,
  23.  
  24. o schedule processing after a certain time interval or at a certain
  25.   time of day,
  26.  
  27. o spawn subtasks for performing background operations such as printing,
  28.   recalculating, and communicating,
  29.  
  30. o communicate between the various tasks in the system,
  31.  
  32. o disable, limit, or enhance the standard DESQview user interface.
  33.  
  34.  
  35. The DESQview API C Library consists of over 200 functions divided
  36. into groups according to the type of object they manipulate.  These
  37. objects include: applications, fields, keyboards, mailboxes, objectqs,
  38. panels, pointers, timers, tasks, and windows.  The groupings correspond
  39. closely to the organization of the DESQview API Reference Manual, a copy
  40. of which is included with the C Library.
  41.  
  42.  
  43. DESQview API C Library functions are divided into 12 logical groups.
  44. Every function in a group has the same 4 character prefix, usually
  45. indicating the type of object the function operates on.  The groups are:
  46.  
  47. Prefix    Group
  48. ------  -----
  49. api_    General Functions
  50. app_    Application (parent task) Management Functions
  51. fld_    Field Management Functions
  52. key_    Keyboard Management Functions
  53. mal_    Mailbox Management Functions
  54. obq_    Objectq Management Functions
  55. pan_    Panel Management Functions
  56. ptr_    Pointer Management Functions
  57. qry_    Query Functions
  58. tim_    Timer Management Functions
  59. tsk_    Task Management Functions
  60. win_    Window Management Functions
  61.  
  62.  
  63. The DESQview API C Library supports the Microsoft C, Lattice C, Borland
  64. Turbo C and Metaware High C compilers for all memory models. Source code
  65. for the C Library is included so that the library can be converted for use
  66. with other compilers if needed.
  67.  
  68.  
  69.  
  70.                      DESQview API C Interfaces
  71.                      -------------------------
  72.  
  73. Listed below are the DESQview API C interfaces available with the
  74. DESQview API C Library.
  75.  
  76.  
  77. General Functions
  78.  
  79. api_beginc      begin critical region
  80. api_cancel      cancel current Window Mgr operation
  81. api_endc        end critical region
  82. api_exit        exit API interface
  83. api_freebit     disconnect 2nd level interrupt handler
  84. api_getbit      define 2nd level interrupt handler
  85. api_getcrit     get critical region nesting level
  86. api_getmem      get system memory buffer
  87. api_init        initialize API interface
  88. api_isobj       determine if a given handle is valid
  89. api_justify     enable/disable automatic justification of window
  90. api_kmouse      turn keyboard mouse on and off
  91. api_level       define API revision level required by application
  92. api_objtype     determine the object type of a given handle
  93. api_pause       give other tasks a chance to run
  94. api_poke        display debug information/bottomline of screen
  95. api_putmem      return system memory buffer
  96. api_pushkey     push key into input stream
  97. api_setbit      schedule 2nd level interrupt handler
  98. api_shadow      get task's logical window buffer& start shadowing
  99. api_sound       make a sound
  100. api_update      redraw portion of logical window and     stop shadowing
  101.  
  102.  
  103. Application Management Functions
  104.  
  105. app_foreonly    indicate whether a task can run in background
  106. app_free        free an application and its window
  107. app_goback      force an application into background
  108. app_gofore      force an application into foreground
  109. app_hide        hide all windows of an application
  110. app_new         create a new application in the current process
  111. app_number      get current applications SWITCH number
  112. app_show        display all windows of an application
  113. app_start       start a new application in a new process
  114. app_suspend     suspend & hide all application's tasks
  115.  
  116.  
  117. Field Management Functions
  118.  
  119. fld_altmode     set Alternate field processing mode
  120. fld_attr        fill a field with a given attribute
  121. fld_char        fill a field with a given character
  122. fld_clear       clear a field
  123. fld_cursor      move cursor to a field
  124. fld_entry       change field table entry
  125. fld_header      change field table header
  126. fld_marker      define selected field marker character
  127. fld_point       move pointer to given position in field
  128. fld_protattr    set Protected Attributes field processing mode
  129. fld_reset       reset selected and modified bits
  130. fld_scroll      scroll a field
  131. fld_swrite      write a string into a field
  132. fld_type        change the type of a field
  133. fld_write       write characters into a field
  134.  
  135.  
  136. Keyboard Management Functions
  137.  
  138. key_addto       set keyboard behavior flags
  139. key_close       disconnect keyboard from its window
  140. key_erase       discard pending keyboard input
  141. key_free        free a keyboard object
  142. key_getc        wait for next key (keystroke mode)
  143. key_getflags    get keyboard control flags
  144. key_getpri      get objectq priority level of keyboard
  145. key_me          get current tasks keyboard handle
  146. key_new         create a new keyboard object
  147. key_of          get handle of a given task's keyboard
  148. key_open        attach keyboard to a given window
  149. key_read        read input from keyboard
  150. key_setesc      define function to filter keys in field mode
  151. key_setflags    replace keyboard control flags
  152. key_setpri      set objectq priority level of keyboard
  153. key_sizeof      get # keyboard messages pending
  154. key_status      get status of last keyboard message
  155. key_subfrom     clear keyboard behavior flags
  156. key_write       write data to keyboard
  157.  
  158.  
  159. Mailbox Management Functions
  160.  
  161. mal_addr        return sender of last message
  162. mal_addto       send message by value with given status
  163. mal_close       close a mailbox
  164. mal_erase       erase all pending messages
  165. mal_find        find a mailbox by name
  166. mal_free        free a mailbox object
  167. mal_getflags    get mailbox control flags
  168. mal_getpri      get objectq priority level of mailbox
  169. mal_lock        lock access to a resource
  170. mal_me          get handle of MAILME mailbox
  171. mal_name        assign a global name to a mailbox
  172. mal_new         create a new mailbox
  173. mal_of          get handle of a given task's mailbox
  174. mal_open        open a mailbox
  175. mal_read        wait for next message
  176. mal_setflags    replace mailbox control flags
  177. mal_setpri      set objectq priority level of mailbox
  178. mal_sizeof      get # messages pending
  179. mal_status      get status of last message received
  180. mal_subfrom     send message by reference with given status
  181. mal_unlock      unlock access to a resource
  182. mal_write       send a message by value with status zero
  183.  
  184.  
  185. Objectq Management Functions
  186.  
  187. obq_close       close the task's objectq
  188. obq_erase       erase contents of the task's objectq
  189. obq_open        open the task's objectq
  190. obj_read        wait for any object to have input
  191. obq_sizeof      get # of objectq entries pending
  192. obq_status      determine if the task's objectq is open
  193. obq_subfrom     remove an object from the task's obectq
  194.  
  195.  
  196. Panel Management Functions
  197.  
  198. pan_apply       display a named panel & prepare for input
  199. pan_close       close a panel file
  200. pan_dir         get list of panels in the panel file
  201. pan_free        free a panel object
  202. pan_new         create a panel object
  203. pan_open        open a panel file
  204. pan_sizeof      get # panels in the panel file
  205. pan_status      get status of last pan_open or pan_apply
  206.  
  207.  
  208. Pointer Management Functions
  209.  
  210. ptr_addto       set pointer control flags
  211. ptr_close       close a pointer object
  212. ptr_erase       erase pending pointer messages
  213. ptr_free        free a pointer object
  214. ptr_getflags    get pointer control flags
  215. ptr_getpri      get objectq priority level of pointer
  216. ptr_getscale    get current scaling factors
  217. ptr_new         create a new pointer object
  218. ptr_open        open pointer and assign to a window
  219. ptr_read        wait for next pointer message
  220. ptr_setflags    replace pointer control flags
  221. ptr_setpri      set objectq priority level of pointer
  222. ptr_setscale    set current scaling factors
  223. ptr_sizeof      get # messages pending
  224. ptr_status      get button state from last message received
  225. ptr_subfrom     clear pointer control flags
  226. ptr_write       move the pointer to a given position
  227.  
  228.  
  229. Query Functions
  230.  
  231. qry_atread      TRUE if win_read and win_readn reads attributes
  232. qry_attr        get current output attribute
  233. qry_color       get physical attribute for given logical attribute
  234. qry_ctrl        TRUE if processing control codes
  235. qry_cursor      get current cursor position
  236. qry_entry       get field table entry
  237. qry_field       get contents of a field
  238. qry_frame       TRUE if the window has a frame
  239. qry_frattr      get current frame attribute
  240. qry_header      get field table header
  241. qry_hidden      TRUE if the window is hidden
  242. qry_kmouse      TRUE if using a keyboard mouse
  243. qry_leave       TRUE if leaving attribute untouched when writing
  244. qry_lsize       get size of logical window buffer
  245. qry_logattr     TRUE if using logical attributes
  246. qry_origin      get origin of physical window relative to logical
  247. qry_position    get position of physical window
  248. qry_size        get size of physical window
  249. qry_title       get window's title
  250. qry_type        get type of field
  251.  
  252.  
  253. Timer Management Functions
  254.  
  255. tim_addto       start a timer for a given interval
  256. tim_close       close a timer object
  257. tim_erase       stop a running timer
  258. tim_free        free a timer object
  259. tim_getpri      get objectq priority level of timer
  260. tim_len         get time remaining until timer expires
  261. tim_new         create a new timer object
  262. tim_open        open a timer object
  263. tim_read        wait for timer to expire
  264. tim_setpri      set objectq priority level of timer
  265. tim_sizeof      get time since a timer started running
  266. tim_status      determine if a timer is running
  267. tim_write       start a timer for a given time of day
  268.  
  269.  
  270. Task Management Functions
  271.  
  272. tsk_free        free a task and its window
  273. tsk_geterror    get error handling level of current task
  274. tsk_me          get handle of current task
  275. tsk_new         create a new task
  276. tsk_pgmint      software interrupt another task
  277. tsk_post        restart a task and post its Objectq
  278. tsk_seterror    set error handling level of current task
  279. tsk_start       restart a stopped task
  280. tsk_stop        temporarily stop a task
  281.  
  282.  
  283. Window Management Functions
  284.  
  285. win_addto       write characters and attributes to a window
  286. win_adopt       adopt a window
  287. win_allow       specify which DESQview commands are allowed for a window
  288. win_async       define asynchronous notify function
  289. win_atread      sets read mode to read either charaters or attributes
  290. win_attach      attach window to its parent task window
  291. win_attr        set current output attribute
  292. win_blanks      write blanks to a window
  293. win_bottom      make window bottommost in its application
  294. win_buffer      get pointer to window's logical window     buffer
  295. win_cancel      cancel notification on a given event
  296. win_color       change logical attribute mapping
  297. win_ctrl        enable/disable interpretation of control characters
  298. win_cursor      move window's logical cursor
  299. win_dflt        change default notify window
  300. win_disallow    specify which DESQview commands are not allowed for a window
  301. win_disperor    display an error message window
  302. win_eof         TRUE if logical cursor is beyond end of window
  303. win_erase       clear window
  304. win_frame       enable/disable display of a window's frame
  305. win_frattr      define window frame attribute
  306. win_free        remove a window from the screen and free its handle
  307. win_hcur        display hardware cursor at logical cursor position
  308. win_hide        marks a window as hidden
  309. win_leave       leave existing attribute when writing to a window
  310. win_len         return width of logical window
  311. win_locate      return which window is visible at the given screen row/col
  312. win_logattr     use logical/physical attributes
  313. win_lsize       set windows logical dimensions
  314. win_maxsize     set windows maximum physical dimensions
  315. win_me          get current task's window handle
  316. win_minsize     set windows minimum physical dimensions
  317. win_move        move physical window
  318. win_new         create a new window
  319. win_notify      enable notification on a given event
  320. win_nread       read n characters from a window
  321. win_open        fill a window with a given character
  322. win_origin      define portion of logical window viewed in the physical window
  323. win_orphan      orphan a window
  324. win_paste       define window as current clipboard window
  325. win_point       jump mouse to logical cursor position
  326. win_poswin      position window relative to another window
  327. win_printf      write formatted data to a window
  328. win_putc        write a character/attribute pair to a window
  329. win_read        read rest of current line from window
  330. win_redraw      redraw a window
  331. win_reorder     reorder an applications windows
  332. win_repattr     write an attribute to a window n times
  333. win_repchar     write a character to a window n times
  334. win_resize      set physical dimensions of window
  335. win_scroll      scroll all or part of a window
  336. win_sizeof      get total number of characters in logical window
  337. win_stream      write a stream to a window
  338. win_subfrom     write attributes to a window
  339. win_swrite      write a zero terminated string to a window
  340. win_title       change a windows title
  341. win_top         make window topmost in application
  342. win_topsys      make window topmost in system
  343. win_unhide      marks a window as not hidden
  344. win_write       write characters to a window
  345.  
  346.  
  347.  
  348.                    DESQview API C Examples
  349.                    -----------------------
  350.  
  351. Also included in the C Library is a C Examples diskette, containing
  352. sample programs that show the basics of writing DESQview-specific
  353. programs.  Examples cover the creation of a simple pop-up menu, creation
  354. of a complex menu (using timers and waiting on multiple events), tracking
  355. of a mouse, subtask creation and termination, intertask communications
  356. and named mailboxes, asynchronous notifies, and process creation.
  357.  
  358.  
  359. The examples are presented roughly in order of increasing complexity. The
  360. primary purpose of each is to show:
  361.  
  362. Example   Shows
  363. -------   -----
  364. hello     a minimal DESQview-specific program
  365. fruit     a simple pop-up menu
  366. point     how to track the mouse
  367. washer    a complex menu, timers, and waiting on multiple events
  368. snakes    subtask creation and termination
  369. server    intertask communication and named mailboxes
  370. request   intertask communication and asynchronous notifies
  371. examples  process creation
  372.  
  373.  
  374. The following are the opening comments for each example program:
  375.  
  376. /****************************************************************
  377. *
  378. *  Name:          HELLO
  379. *
  380. *  Function:      display 'hello world' in the task window
  381. *
  382. *  Shows how to:  1. write a 'minimal' DESQview-specific program.
  383. *                 2. initialize and disable the C interfaces.
  384. *                 3. detect DESQview's presence.
  385. *                 4. enable DESQview extensions.
  386. *                 5. write to the default task window.
  387. *
  388. ****************************************************************/
  389.  
  390.  
  391. /****************************************************************
  392. *
  393. *  Name:          FRUIT
  394. *
  395. *  Function:      display a pop-up menu and report selections
  396. *
  397. *  Shows how to:  1. create a new window and associated keyboard.
  398. *                 2. define the contents and fields for a menu.
  399. *                 3. move and display a window.
  400. *                 4. take input from a menu.
  401. *
  402. ****************************************************************/
  403.  
  404.  
  405. /****************************************************************
  406. *
  407. *  Name:          POINT
  408. *
  409. *  Function:      track the pointer as it passes through the window.
  410. *
  411. *  Shows how to:  1. create and read a pointer object.
  412. *                 2. force the keyboard mouse ON, if applicable.
  413. *                 3. display single characters in a window.
  414. *                 4. jump the pointer.
  415. *                 5. change cursor position for a window.
  416. *
  417. ****************************************************************/
  418.  
  419.  
  420. /****************************************************************
  421. *
  422. *  Name:          WASHER
  423. *
  424. *  Function:      Emulate a washing machine control panel.
  425. *
  426. *  Shows how to:  1. construct complex menus (dialogues) including
  427. *                    select, input, output, and inactive fields.
  428. *                 2. change field types dynamically.
  429. *                 3. implement "radio button" select fields.
  430. *                 4. use a timer object to measure time intervals.
  431. *                 5. use an objectq to wait for multiple events.
  432. *
  433. ****************************************************************/
  434.  
  435.  
  436. /****************************************************************
  437. *
  438. *  Name:          SNAKES
  439. *
  440. *  Function:      display multiple "snakes" each controlled by a
  441. *                 separate task.
  442. *
  443. *  Shows how to:  1. create and terminate subtasks.
  444. *                 2. use mail to send initial data to a new task.
  445. *                 3. use a semaphore to control access to a
  446. *                    resource, in this case the window.
  447. *                 4. read and write the window contents.
  448. *
  449. ****************************************************************/
  450.  
  451.  
  452. /****************************************************************
  453. *
  454. *  Name:          SERVER
  455. *
  456. *  Function:      This program provides a very simple file
  457. *                 management service.  It maintains a database
  458. *                 consisting of arbitrary length text strings and
  459. *                 allows the database to be queried for all
  460. *                 records containing a specified substring.
  461. *                 Queries are sent by mail from REQUEST windows.
  462. *                 The results are returned to the REQUESTers
  463. *                 mailbox.
  464. *
  465. *  Shows how to:  1. use named mailboxes to detect multiple
  466. *                    instances of the same program.
  467. *                 2. use named mailboxes to control access to
  468. *                    public utilities.
  469. *                 3. send and receive mail.
  470. *                 4. use a timer object to display a running clock.
  471. *                 5. optimize a program by performing the equivalent of
  472. *                    multiple C Library calls in one encoded stream.
  473. *
  474. ****************************************************************/
  475.  
  476.  
  477. /****************************************************************
  478. *
  479. *  Name:          REQUEST
  480. *
  481. *  Function:      Provides a front-end for the SERVER program.
  482. *                 Takes a string entered by the user and sends
  483. *                 requests to the SERVER to either add the string
  484. *                 to the database or find all records that contain
  485. *                 the string.
  486. *
  487. *  Shows how to:  1. find a named mailbox.
  488. *                 2. read a key-at-a-time from the keyboard.
  489. *                 3. use an asynchronous notify function to
  490. *                    detect attempts to close the window.
  491. *
  492. ****************************************************************/
  493.  
  494.  
  495. /****************************************************************
  496. *
  497. *  Name:          EXAMPLES
  498. *
  499. *  Function:      Display a menu listing the example programs and
  500. *                 start an example as a new process when so requested.
  501. *
  502. *  Shows how to:  1. read a DESQview Program Information File (DVP)
  503. *                    from disk.
  504. *                 2. adjust the DVP to reflect the current drive and
  505. *                    directory.
  506. *                 3. start a new process using the DVP.
  507. *
  508. ****************************************************************/
  509.  
  510.  
  511.  
  512.                   Installing the C Examples
  513.                   -------------------------
  514.  
  515. To install the example programs, copy all files from the diskette into any
  516. directory of your choice and use the DESQview "Add a Program" feature to
  517. add programs from that directory.  Select the only option that you are
  518. presented, the "C Examples" program.  When you then open a "C Examples"
  519. window, a menu will be presented that lets you run the other example
  520. programs.
  521.